#include <bits/stdc++.h>
using namespace std;
int a[200005],wh[20][200005];
int pw[200005],d[20][200005];
int n,m;
long long sum=0;
void build(int hi,int num,int mn){
    long long cnt=0;
    if(hi==0){
        if(wh[0][num]==-1||a[wh[0][num]]>=mn){
            sum+=num;
            return ;
        }
        return ;
    }
    if(d[hi][num]==0){
        build(hi-1,num*2-1,max(mn,hi));
        if(wh[hi-1][num*2-1]==-1||a[wh[hi-1][num*2-1]]<hi){
            build(hi-1,num*2,mn);
        }
    }else{
        build(hi-1,num*2,max(mn,hi));
        if(wh[hi-1][num*2]==-1||a[wh[hi-1][num*2]]<hi){
            build(hi-1,num*2-1,mn);
        }
    }
    return ;
}
long long slv(int len){
    int hi=pw[len-1]+1;
    int sz=1<<hi;
    for(int i=1;i<=sz;i++){
        wh[0][i]=(i<=len)?i:-1;
    }
    for(int i=1;i<=hi;i++){
        sz/=2;
        for(int j=1;j<=sz;j++){
            int l=j*2-1,r=j*2;
            if(d[i][j]==0){
                if(wh[i-1][l]==-1){
                    wh[i][j]=-1;
                }else if(a[wh[i-1][l]]>=i){
                    wh[i][j]=wh[i-1][l];
                }else{
                    wh[i][j]=wh[i-1][r];
                }
            }else{
                if(wh[i-1][r]==-1){
                    wh[i][j]=-1;
                }else if(a[wh[i-1][r]]>=i){
                    wh[i][j]=wh[i-1][r];
                }else{
                    wh[i][j]=wh[i-1][l];
                }
            }
        }
    }
    sum=0;
    build(hi,1,-1);
    return sum;
}
int main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","w",stdout);
    int n,m;
    cin>>n>>m;
    pw[1]=0;
    for(int i=2;i<=n;i++){
        pw[i]=pw[i/2]+1;
    }
    int p[n+1],q[m+1];
    for(int i=1;i<=n;i++){
        cin>>p[i];
    }
    for(int i=1;i<=m;i++){
        cin>>q[i];
    }
    int h=pw[n]+1;
    for(int i=1;i<=h;i++){
        for(int j=1;j<=(1<<(h-i));j++){
            char c;
            cin>>c;
            d[i][j]=c-'0';
        }
    }
    int T;
    cin>>T;
    while(T--){
        int x[4];
        for(int i=0;i<4;i++){
            cin>>x[i];
        }
        for(int i=1;i<=n;i++){
            a[i]=x[i%4]^p[i];
        }
        int ans=0;
        for(int i=1;i<=m;i++){
            ans^=(i*slv(q[i]));
        }
        cout<<ans<<endl;
    }
    return 0;
}